const { Controller } = require('egg');

class HomeController extends Controller {
  async index() {
    const { ctx } = this;
    ctx.body = 'hi, egg';
  }

  /**
   * @api {GET} /history/home/list 获取订单列表
   * @apiName list
   * @apiGroup history
   * @apiVersion 1.0.0
   *
   * @apiRequest json
   * @apiQuery  { String } name 订单名称
   * @apiQuery  { String } model 模块
   * @apiQuery  { String } url 请求url
   * @apiQuery  { String } reqmethod 请求方式
   * @apiQuery  { Number } type 类型
   * @apiQuery  { String } order 排序字段
   * @apiQuery  { String } method 排序方式
   * @apiQuery  { String } pageIndex 页码
   * @apiQuery  { String } pageSize 页面大小
   *
   * @apiHeader { String } Authorization 注册信息
   */
  async list() {
    const { ctx, app } = this;
    try {
      const param = ctx.query;

      const { name, model, url, reqmethod, type, order, method, pageIndex, pageSize } = await app.rule.home.list(param);

      const data = await ctx.service.home.list(name, model, url, reqmethod, type, order, method, pageIndex, pageSize);

      ctx.status = 200;
      ctx.sendSuccess({ data });
      return;
    } catch (error) {
      ctx.status = 200;
      ctx.sendFailed({ msg: error.message });
      return;
    }
  }

  /**
   * @api {POST} /history/home/insert 新增历史
   * @apiName insert
   * @apiGroup history
   * @apiVersion 1.0.0
   *
   * @apiRequest json
   * @apiQuery  { String } name 订单名称
   * @apiQuery  { String } url 地址
   * @apiQuery  { String } ip 请求ip
   * @apiQuery  { String } method 请求方式
   * @apiQuery  { Number } type 类型
   * @apiQuery  { String } model 请求模块
   * @apiQuery  { String } param 请求参数
   * @apiQuery  { String } result 请求结果
   *
   * @apiHeader { String } Authorization 注册信息
   */
  async insert() {
    const { ctx, app } = this;
    try {
      const params = ctx.request.body;

      const { model, url, ip, method, param, result, type } = await app.rule.home.insert(params);

      const data = await ctx.service.home.insert(model, url, ip, method, param, result, type);

      ctx.status = 200;
      ctx.sendSuccess({ data });
      return;

    } catch (error) {
      ctx.status = 200;
      ctx.sendFailed({ msg: error.message });
      return;
    }
  }

  /**
   * @param req
   * @param res
   * @api {GET} /history/home/info 历史详情
   * @apiName info
   * @apiGroup history
   * @apiVersion 1.0.0
   *
   * @apiRequest json
   * @apiQuery  { String } id 订单名称
   *
   * @apiHeader { String } Authorization 注册信息
   */
  async info(req, res) {
    const { ctx } = this;
    try {
      const { id } = ctx.query;

      const data = await ctx.service.home.info(id);

      ctx.status = 200;
      ctx.sendSuccess({ data });
      return;

    } catch (error) {
      ctx.status = 200;
      ctx.sendFailed({ msg: error.message });
      return;
    }
  }

  async getSM(req, res) {
    const { ctx } = this;
    try {
      const data = await ctx.service.home.getSM();
      ctx.status = 200;
      ctx.sendSuccess({ data });
      return;

    } catch (error) {
      ctx.status = 200;
      ctx.sendFailed({ msg: error.message });
      return;
    }
  }
}

module.exports = HomeController;
